
# 在Python中，这种一边循环一边计算的机制，称为生成器：generator
# 第一种方法很简单，只要把一个列表生成式的[]改成()，就创建了一个generator
l=[x*x for x in range(10)]
print(l)
g=(x*x for x in range(10))
print(g)
while next(g):
    print(next(g),end='\t')

# 如果一个函数定义中包含yield关键字，那么这个函数就不再是一个普通函数，而是一个generator
def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1
    return 'done'

for x in fib(10):
    print(x,end='\t')